package lanQiaoBei.数据结构.堆;
import java.io.*;

/*
* 给定一个长度为n的整数数列，请你将它调整为小根堆
* 输入格式：
* n
* 1 3 2 5 ....
* */
public class P2 {
    final static int N=100010;
    static BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
    static int n,size;
    static int[]h=new int[N];

    static void scan()throws Exception{
           n=Integer.parseInt(br.readLine());
           String[]ss=br.readLine().split(" ");
           for(int i=1;i<=n;i++){
               h[i]=Integer.parseInt(ss[i-1]);
           }
           size=n;
    }
    static void swap(int i,int j){
           int t=h[i];
           h[i]=h[j];
           h[j]=t;
    }
    static void down(int i){
    	   int l=2*i,r=l+1,t=i;
    	   if(l<=size&&h[l]<h[t]) t=l;
    	   if(r<=size&&h[r]<h[t])t=r;
    	   if(t!=i){
    		   swap(i,t);
    		   down(t);
    	   }
    }
    public static void main(String[] args) throws Exception {
    	   scan();
		   //建堆(将原数组以O(n)的时间复杂度初始化为堆)
    	   //从n/2位置开始down
    	   for(int i=n/2;i>0;i--){
    		   down(i);
    	   }
    	   while(size>0){
    		    System.out.print(h[1]+" ");
    		    swap(1,size--);
    		    down(1);
    	   }
    	    
	}
}